iT邦幫忙

2026 iThome 鐵人賽

DAY 5
0
AI 自動化

30 天打造 AI 自動化維運平台:從監控、告警到故障分析系列 第 5

Day 5|讓監控資料看得懂:用 Grafana 做第一個 Dashboard

  • 分享至 

  • xImage
  •  

Day 4 已經讓 Prometheus 成功收到 server01 的監控資料。

目前架構是:

server01

│ Node Exporter :9100

Prometheus :9090

在 Prometheus 裡,我們已經可以查到:

node_cpu_seconds_total
node_memory_MemAvailable_bytes
node_filesystem_avail_bytes

問題是,這些資料對人來說並不是很好閱讀。

今天要做的事情很單純:

安裝 Grafana,連接 Prometheus,做出第一個 Server Dashboard。

今天完成後會變成這樣
server01

│ Metrics

Node Exporter


Prometheus

│ Data Source

Grafana


Dashboard

Prometheus 繼續負責收資料。

Grafana 則負責把這些資料畫成圖表。

Step 1:安裝 Grafana

先登入 Monitoring Server:

ssh username@192.168.1.100

安裝必要套件:

sudo apt update
sudo apt install -y apt-transport-https software-properties-common wget gpg

加入 Grafana 的 repository:

sudo mkdir -p /etc/apt/keyrings
wget -q -O - https://apt.grafana.com/gpg.key |
gpg --dearmor |
sudo tee /etc/apt/keyrings/grafana.gpg > /dev/null

接著加入套件來源:

echo "deb [signed-by=/etc/apt/keyrings/grafana.gpg] https://apt.grafana.com stable main" |
sudo tee /etc/apt/sources.list.d/grafana.list

更新套件清單:

sudo apt update

安裝 Grafana:

sudo apt install grafana -y
Step 2:啟動 Grafana

安裝完成後啟動服務:

sudo systemctl start grafana-server

設定開機自動啟動:

sudo systemctl enable grafana-server

確認狀態:

sudo systemctl status grafana-server

如果看到:

Active: active (running)

代表 Grafana 已經正常啟動。

Step 3:打開 Grafana

Grafana 預設使用:

3000 Port

所以在瀏覽器輸入:

http://192.168.1.100:3000

第一次登入預設帳號通常是:

Username:admin
Password:admin

第一次登入後 Grafana 會要求修改密碼。

完成之後,就會進到 Grafana 首頁。

Step 4:把 Prometheus 接進 Grafana

Grafana 本身不負責收 Server Metrics。

所以要告訴 Grafana:

資料在 Prometheus 裡。

在 Grafana 裡找到:

Connections → Data sources

選擇:

Prometheus

接著設定 Prometheus Server URL:

http://localhost:9090

因為目前 Prometheus 和 Grafana 都裝在同一台 Monitoring Server,所以直接使用 localhost 即可。

最後按:

Save & Test

如果看到類似:

Successfully queried the Prometheus API.

代表:

Prometheus


Grafana

已經成功連接。

Step 5:做第一個 Dashboard

接下來建立:

Dashboards → New → New Dashboard

選擇:

Add visualization

Data Source 選:

Prometheus

第一個我們先做最簡單的。

輸入:

up{job="server01"}

昨天有提到:

1 = 正常
0 = 無法取得資料

所以這個 Panel 可以直接拿來看:

server01 現在是不是還活著。

Panel 名稱可以設定成:

Server Status

Visualization 可以選:

Stat

這樣就有第一個監控 Panel 了。

Step 6:加入 Memory 使用率

只有 Server Status 當然不太夠。

接著新增第二個 Panel。

這次看 Memory。

Prometheus 原本會提供:

node_memory_MemTotal_bytes

以及:

node_memory_MemAvailable_bytes

我們可以利用這兩個數字算出目前 Memory 使用率。

輸入:

100 * (
1 -
node_memory_MemAvailable_bytes{job="server01"}
/
node_memory_MemTotal_bytes{job="server01"}
)

Visualization 可以選:

Gauge

Unit 則選:

Percent (0-100)

這樣 Dashboard 上就會直接顯示:

Memory Usage

62%

比昨天直接看到一大串 Bytes 好理解很多。

Step 7:加入 CPU 使用率

再新增第三個 Panel。

輸入:

100 - (
avg by(instance) (
rate(node_cpu_seconds_total{
job="server01",
mode="idle"
}[5m])
) * 100
)

Panel 名稱:

CPU Usage

Visualization 一樣可以使用:

Gauge

Unit:

Percent (0-100)

現在我們的 Dashboard 已經開始有點樣子了。

第一個 Dashboard 完成

目前應該至少有:

┌─────────────────────────────┐
│ server01 │
├─────────┬─────────┬─────────┤
│ Status │ CPU │ Memory │
│ │ │ │
│ 1 │ 35% │ 62% │
└─────────┴─────────┴─────────┘

雖然還很簡單,但現在我們終於不用一直看:

node_memory_MemAvailable_bytes

或:

node_cpu_seconds_total

而是可以直接看到:

CPU 現在多少?

Memory 用了多少?

Server 還有沒有正常被監控?

Prometheus 和 Grafana 到底差在哪?

做到這裡,也比較容易理解兩個工具各自在做什麼。

Prometheus:

幫我們把監控資料收回來。

Grafana:

幫我們把資料變得看得懂。

所以目前整套流程已經變成:

Server

Node Exporter

Prometheus

Grafana

Dashboard

到這一步,我們已經有一套最基本的 Server Monitoring 了。

Day 5 完成

今天完成:

✓ 安裝 Grafana
✓ 啟動 Grafana
✓ 連接 Prometheus
✓ 建立第一個 Dashboard
✓ Server Status
✓ CPU Usage
✓ Memory Usage

現在我們已經可以看到主機狀態。

但還有一個很實際的問題。

假設今天凌晨 CPU 突然跑到 95%,總不能要求維運人員 24 小時一直盯著 Grafana。

所以:

有監控還不夠,我們還需要主動告訴人「出事了」。


上一篇
Day 4 預告 Day 4|讓 Prometheus 跑起來:開始收集第一筆監控資料
下一篇
Day 6|有監控還不夠:開始設定第一條告警規則
系列文
30 天打造 AI 自動化維運平台:從監控、告警到故障分析9
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言